package com.wei.czz.framework.store.service;

import com.wei.czz.common.vo.common.UpdateStatusVo;
import com.wei.czz.common.vo.store.StoreBossVo;
import com.wei.czz.framework.store.entity.StoreBossEntity;

import java.util.Collection;
import java.util.List;

/**
 * 商店老板表
 *
 * @author wei
 * email 945158190@gmail.com
 * date 2023-11-22 17:44:15
 */
public interface StoreBossService {

    /**
     * 添加商店老板操作
     * @param storeBossVo 参数对象
     * @return 商店老板主键
     */
    Long saveStoreBoss(StoreBossVo storeBossVo);

    /**
     * 添加商店老板操作
     * @param storeBoss 商店老板对象
     * @return 商店老板主键
     */
    Long saveStoreBoss(StoreBossEntity storeBoss);

    /**
     * 复制商店老板操作
     * @param preStoreId 上一个商店主键
     * @param storeId    商店主键
     */
    void copyStoreBoss(Long preStoreId, Long storeId);

    /**
     * 获取商店默认老板列表操作
     * @param storeIdList 商店主键列表
     * @return 老板列表
     */
    List<StoreBossEntity> getStoreDefaultBossList(List<Long> storeIdList);

    /**
     * 获取商店默认老板操作
     * @param storeId 商店主键
     * @return 商店默认老板对象
     */
    StoreBossEntity getStoreDefaultBoss(Long storeId);

    /**
     * 获取商店所有老板操作
     * @param storeId 商店主键
     * @return 商店老板列表
     */
    List<StoreBossEntity> getStoreBossList(Long storeId);

    /**
     * 获取商店正在审核中的老板操作
     * @param storeId 商店主键
     * @return 商店老板对象
     */
    StoreBossEntity getStoreAuditBoss(Long storeId);

    /**
     * 批量获取商店正在审核中的老板操作
     * @param storeIdCollection 商店主键集合
     * @param deleteStatus      删除状态
     * @return 商店老板对象
     */
    List<StoreBossEntity> batchGetStoreAuditBoss(Collection<Long> storeIdCollection, Integer deleteStatus);

    /**
     * 获取商店老板下一个排序等级操作
     * @param storeId 商店主键
     * @return 排序等级
     */
    Integer getNextSort(Long storeId);

    /**
     * 获取商店老板操作
     * @param id 主键
     * @return 商店老板主键
     */
    StoreBossEntity getStoreBoss(Long id);

    /**
     * 更新商店老板操作
     * @param storeBoss 商店老板对象
     */
    void updateStoreBoss(StoreBossEntity storeBoss);

    /**
     * 修改商店老板状态操作
     * @param updateStatusVo 参数对象
     */
    void updateStoreBossStatus(UpdateStatusVo updateStatusVo);

    /**
     * 删除商店老板操作
     * @param id 主键
     */
    void deleteStoreBoss(Long id);

}

